package com.sun.services.users;


import com.sun.dto.users.UserDto;
import com.sun.dto.users.UserRoleDto;
import com.sun.entitys.users.User;
import com.sun.entitys.users.UserRole;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;

/**
 * MP自动填充Handler
 *
 * @Author sun
 * @CreateTime 2025/9/6 19:39@
 */
@Mapper(componentModel = "spring")
/**
 * 用户信息映射接口
 * 用于用户实体（User）与用户数据传输对象（UserDto）之间的转换
 */
public interface UserMapper {
    /**
     * 将用户实体转换为用户数据传输对象
     *
     * @param user 用户实体
     * @return 转换后的用户数据传输对象
     */
    UserDto toDto(User user);

    /**
     * 将用户实体转换为用户数据传输对象，并填充到目标对象
     *
     * @param user 用户实体
     * @param userDto 目标用户数据传输对象
     * @return 转换后的用户数据传输对象
     */
    UserDto toDto(User user, @MappingTarget UserDto userDto);

    /**
     * 将用户数据传输对象转换为用户实体
     *
     * @param userDto 用户数据传输对象
     * @return 转换后的用户实体
     */
    User toEntity(UserDto userDto);

    /**
     * 将用户数据传输对象转换为用户实体，并填充到目标对象
     *
     * @param userDto 用户数据传输对象
     * @param user 目标用户实体
     * @return 转换后的用户实体
     */
    User toEntity(UserDto userDto, @MappingTarget User user);
}
